1. Field of the Invention
The present invention generally relates to computer software. More specifically, the present invention relates to computer software applications configured to facilitate the interactive design of computer generated models of utility networks.
2. Description of the Related Art
Currently, computer-aided design (CAD) applications are available that allow a designer or engineer to compose graphical models of real-world three-dimensional (3D) structures. For example, an engineer or designer may use a CAD application to construct a graphical representation of a utility network such as a gas pipeline, an electric power-grid, or a surface water drainage network. These CAD applications may be used to compose two- and three-dimensional CAD models of the utility network from model elements that correspond with real-world counterparts, e.g., pipes, conduits, manhole covers, catch basins, and other pipe and structure elements. Further, such CAD applications may present users with a catalog-like display of the elements that may be used in a CAD model as separate “objects” or “parts.” Thus, rather than compose a graphical CAD model by drawing individual lines or geometric shapes, an engineer may compose a CAD model using graphical representations of objects that correspond with the components used to build the real-world structure. This technique provides an intuitive, flexible method for generating a CAD model of a utility network.
The network parts that are available for a CAD model are typically hard-coded and are provided as part of the CAD application or an associated “parts catalog” or “part database.” Each part may be associated with a set of attributes or properties related to the part. For example, a manhole part may have attributes such as a radius, a material, a weight, etc., and a pipe part may have attributes such as pipe-material, size (e.g., length and diameter), flow properties, etc. When a user selects a particular part to include in a 3D model, the user may be prompted to supply values for the attributes, or the properties may be predefined for that part.
Defining each network part in advance allows the CAD application to be “aware” of what parts are available, and what attributes or properties are associated with each individual part. Developers building the CAD application use the “awareness” of the hard-coded parts to write very efficient logic for searching, displaying, querying, and otherwise processing a CAD model. For example, the CAD application may be configured to display, query, and perform additional functions using the hard-coded part types and part properties. In addition, the CAD application may allow users to create functions to analyze aspects of the CAD model based on the network parts (e.g., functions to calculate part sizing or construction requirements). Typically, users or 3rd party developers write these functions using an API. The API may include functions for setting, querying, and retrieving values regarding the hard-coded network part types part attributes present in a given CAD model.
On the other hand, configuring the CAD application and/or parts catalog in advance, restricts users to the “universe” of parts provided by the CAD application. Very often, however, users may desire to modify an existing part by adding an attribute or property or to define an entirely new part (and an associated set of attributes and properties). To address this need, users may work with the developers of the CAD application to request revisions or changes, allowing the desired attribute to be hard-coded into the CAD application and/or parts catalog. One drawback to this approach is that it may place significant stress on developer resources, as developers must be removed from other tasks to add the desired attributes or properties to the parts. Further, some attributes or properties may only be of use to a limited group of users, and hard coding a global extension to the CAD application may be impractical. Additionally, much of the time, end-users simply do not have direct access to the developers.
Another common issue with CAD applications used to model real world data is the ability of the CAD application to characterize the real world model is necessarily limited to manage the scope of a CAD application release, and feedback from users identifying additional model requirements or desired capabilities tends to occur after the CAD applications released. Thus, users must often wait for a subsequent release to incorporate desired features.
Another drawback to this approach is that different users must ensure that they have the correct versions of the CAD application or parts catalog to view a particular CAD model; otherwise. If the same version is unavailable, different users may be unable to share a CAD model with one another.
Another approach used by some CAD applications is to allow users to define metadata for the elements of a CAD model. For example, a CAD application may allow a user to create an annotation for a part (or group of parts) included in a particular CAD model. However, in this approach, the attributes and properties associated with the part are not modified, and the modifications are instead localized to the specific part being annotated. If the added property is meant to be a “global” extension, then the user must annotate each instance of the part in the CAD model, a time-consuming and error-prone process. Further, when presenting users with a graphical display of what properties or attributes are associated with a particular network part, the annotations or metadata may provide only limited usefulness. For example, CAD applications often provide the ability to generate two-dimensional (2D) engineering drawings or construction documents from a CAD model. Such 2D drawings often include schedules of attribute types and values for some (or all) of the network parts represented in the drawing. Without the ability to identify the different attributes associated with a specific network part, the CAD application may be unable to properly create a desired schedule for a 2D drawing generated from a 3D model.
Accordingly, there remains a need for a CAD application that does not confine users to composing a computer generated model from a limited number of parts provided by a CAD application and/or parts catalog. Further, to be useful, the process of adding new part types or part attributes should not require having a developer hard code new network parts types or part attributes into the CAD application. Further, the mechanism for adding part types or part attributes should seamlessly integrate with application—specific part types and properties. Lastly, different users should be able to share copies of a CAD model with one another, without being forced to ensure that each has the same “network part set.”